package main

import (
	"bufio"
	"fmt"
	"strings"
)

func main() {
	// 创建一个实现了 io.Reader 接口的字符串读取器
	reader := strings.NewReader("Hello, world!")

	// 创建一个带缓冲的读取器
	bufReader := bufio.NewReader(reader)

	// 读取并输出前 5 个字节
	buffer := make([]byte, 5)
	n, err := bufReader.Read(buffer)
	if err != nil {
		fmt.Println("Error reading data:", err)
		return
	}
	fmt.Printf("Read %d bytes: %s\n", n, buffer[:n])

	// 将最后一个字节退回缓冲区
	err = bufReader.UnreadByte()
	if err != nil {
		fmt.Println("Error unread byte:", err)
		return
	}

	// 重新读取并输出一个字节
	c, err := bufReader.ReadByte()
	if err != nil {
		fmt.Println("Error reading byte:", err)
		return
	}
	fmt.Printf("Read byte: %c\n", c)
}
